\insert AplicarMovimiento.oz
\insert Lista.oz
\insert Visualizer.oz

declare

fun {CalcularMovimientos Xs Ys Mov}

	local Aux1 Aux2 Long1 Long2 MovAux in
		case Ys of nil then nil
		[] M|Mr then
			%Verificar como devuelve las listas PartirTren
			Aux1,Aux2 = {PartirTren Xs M}
			Long1 = {Longitud Aux1}
			Long2 = {Longitud Aux2}
			MovAux|{Agregar Mov [one(Long2+1)|dos(Long1)|one(0-Long2+1)|dos(0-Long1)]}
			{CalcularMovimiento [Aux1|Aux2] Mr MovAux} 
		end
	end
end
			
	

fun {PartirTren Tren Vagon}
	local PosVagon Long in
		Long = {Longitud Tren}
		if(Long > 1) then
			PosVagon = {Posicion Tren Vagon}
			Hs = {Tomar Tren PosVagon-1}
			Ts = {Tomar Tren Long}
			{Eliminar Ts PosVagon}
		else
			%Probar de sacarlo a ver que pasa no poner A = 21
			Hs = nil
			Ts = nil			
		end
	end
end

local Tren1 Tren2 in
	Tren1 = a|b|c|nil
	Tren2 = b|a|c|nil
	Movs = CalcularMovimientos{Tren1 Tren2}
end
